#ifndef CARD_H_
#define CARD_H_

#include <iostream>

namespace core
{

	enum SUIT
	{
		  SPADES = 0
		, CLUBS
		, DIAMONDS
		, HEARTS
	};

	enum RANK
	{
		  JACK = 11
		, QUEEN
		, KING
		, ACE
	};

typedef short unsigned int uint8;

class Card
{
public:
	//static Card empty_card() { return Card(0,0); }

	Card();
	Card(bool input);
	Card(uint8 rnk, uint8 s);

	inline uint8 rank() const { return mRank; }
	inline uint8 suit() const { return mSuit; }
	inline bool empty() const { return mRank == 0; }

	bool operator== (const Card& right);
	bool operator>  (const Card& right);

	friend std::ostream& operator<< (std::ostream &output, Card obj);
	//friend std::istream& operator>> (std::istream &input, Card obj);
protected:
	uint8 mRank;
	uint8 mSuit;
};

} // namespace core

#endif // CARD_H_